package com.zhentao.datacollection.domain.entity;

import com.baomidou.mybatisplus.annotation.*;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 入库统计实体类
 */
@TableName("dc_storage_statistics")
public class StorageStatistics {
    
    @TableId(type = IdType.AUTO)
    private Long id;
    
    private LocalDate clearanceDate; // 结关日期
    private String dataType; // 数据类型
    private String storageStatus; // 入库状态：SUCCESS/FAILED
    private String failureReason; // 失败原因
    
    private BigDecimal rmbAmount; // 人民币金额值
    private BigDecimal usdAmount; // 美元金额值
    
    private BigDecimal yearOnYearGrowth; // 金额同比
    private BigDecimal monthOnMonthGrowth; // 金额环比
    
    private Integer recordCount; // 记录条数
    private LocalDateTime storageTime; // 入库时间
    
    // 统计相关字段
    private BigDecimal lastYearSameMonthAmount; // 去年同月金额
    private BigDecimal lastMonthAmount; // 上月金额
    
    @TableLogic
    private Integer isDelete;
    
    private LocalDateTime createdTime;
    private LocalDateTime updatedTime;
    
    // Getters and Setters
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    
    public LocalDate getClearanceDate() { return clearanceDate; }
    public void setClearanceDate(LocalDate clearanceDate) { this.clearanceDate = clearanceDate; }
    
    public String getDataType() { return dataType; }
    public void setDataType(String dataType) { this.dataType = dataType; }
    
    public String getStorageStatus() { return storageStatus; }
    public void setStorageStatus(String storageStatus) { this.storageStatus = storageStatus; }
    
    public String getFailureReason() { return failureReason; }
    public void setFailureReason(String failureReason) { this.failureReason = failureReason; }
    
    public BigDecimal getRmbAmount() { return rmbAmount; }
    public void setRmbAmount(BigDecimal rmbAmount) { this.rmbAmount = rmbAmount; }
    
    public BigDecimal getUsdAmount() { return usdAmount; }
    public void setUsdAmount(BigDecimal usdAmount) { this.usdAmount = usdAmount; }
    
    public BigDecimal getYearOnYearGrowth() { return yearOnYearGrowth; }
    public void setYearOnYearGrowth(BigDecimal yearOnYearGrowth) { this.yearOnYearGrowth = yearOnYearGrowth; }
    
    public BigDecimal getMonthOnMonthGrowth() { return monthOnMonthGrowth; }
    public void setMonthOnMonthGrowth(BigDecimal monthOnMonthGrowth) { this.monthOnMonthGrowth = monthOnMonthGrowth; }
    
    public Integer getRecordCount() { return recordCount; }
    public void setRecordCount(Integer recordCount) { this.recordCount = recordCount; }
    
    public LocalDateTime getStorageTime() { return storageTime; }
    public void setStorageTime(LocalDateTime storageTime) { this.storageTime = storageTime; }
    
    public BigDecimal getLastYearSameMonthAmount() { return lastYearSameMonthAmount; }
    public void setLastYearSameMonthAmount(BigDecimal lastYearSameMonthAmount) { this.lastYearSameMonthAmount = lastYearSameMonthAmount; }
    
    public BigDecimal getLastMonthAmount() { return lastMonthAmount; }
    public void setLastMonthAmount(BigDecimal lastMonthAmount) { this.lastMonthAmount = lastMonthAmount; }
    
    public Integer getIsDelete() { return isDelete; }
    public void setIsDelete(Integer isDelete) { this.isDelete = isDelete; }
    
    public LocalDateTime getCreatedTime() { return createdTime; }
    public void setCreatedTime(LocalDateTime createdTime) { this.createdTime = createdTime; }
    
    public LocalDateTime getUpdatedTime() { return updatedTime; }
    public void setUpdatedTime(LocalDateTime updatedTime) { this.updatedTime = updatedTime; }
}
